<?php
/*
+--------------------------------------------------------------------------
|   Web: http://RongBay.com 
|   Update date : 14/12/2010
+---------------------------------------------------------------------------
|   > Script written by TuanNK
+---------------------------------------------------------------------------
*/

if (preg_match("#" . basename(__FILE__) . "#", $_SERVER['PHP_SELF'])) {
    print "<h1>Incorrect access</h1>You cannot access this file directly.";
    exit;
}

class ajax_payment
{
    function playme()
    {
        $code = Url::getParam('code');
        //yêu cầu đặt tên $code=tên của method trong class

        if (method_exists($this, $code)) {
            $this->$code();
        } 
        else
        {
            $this->home();
        }
    }

    function home()
    {
        global $display;
        
        die("Nothing to do...");
    }

    function resync(){
        if (User::is_login()) {
            if (User::have_permit('cart_resync')) {
                $order_id = Url::get('cart_id','');
                $order_code = Url::get('cart_code','');

                $pg = new PG_checkout();
                $info = $pg->querySohapayInfo($order_code);

                if($info=='canceled_or_notpay'){
                    Db_PaymentLog::removeFromQueue($order_id);
                    echo 'Đơn hàng này chưa được thanh toán.';
                    return;
                }elseif($info=='not_connect'){
                    echo 'Kết nối tới SohaPay bị lỗi.';
                    return;
                }elseif($info=='invalid_order_code'){
                    echo 'Order code không chính xác, bạn hãy kiểm tra lại.';
                    return;
                }elseif(is_array($info)){
                    if($info['shp_order_status'] == 1){ //đã thanh toán thành công
                        //xóa khỏi queue
                        Db_PaymentLog::removeFromQueue($order_id);

                        $cart = DB::select('cart', 'id=' . $order_id, __FILE__ . ' line ' . __LINE__);
                        if($cart && $cart['status'] < Db_OrderHelper::CART_STATUS_PAID){
                            $cart_id = $cart['id'];
                            $room_id = DB::select_all('booking', 'cart_id=' . $cart_id);
                            $conflict = false;
                            foreach ($room_id as $rid) {
                                $min_room_available = Db_Room::getMinAvailableRoomNumber($rid['room_id'], $rid['date_start'], $rid['date_end']);
                                if ($min_room_available < $rid['quantity']){
                                    $conflict = true;
                                }
                            }
                            if ($conflict == true) {
                                $error = 'conflict';
                                //TRƯỜNG HỢP ĐÃ THANH TOÁN, NHƯNG HẾT PHÒNG
                            } else {
                                $cart_status = Db_OrderHelper::CART_STATUS_PAID; //thanh toán thành công
                                $booking_status = array('status' => 1);
                                DB::update('booking', $booking_status, 'cart_id=' . $cart_id, __FILE__ . ' line ' . __LINE__);
                                foreach ($room_id as $rid) {
                                    Db_OrderHelper::updateRoomStatusByBooking($rid);
                                }
                                $format = '%d/%m/%Y %H:%M:%S';
                                $strf = strftime($format);
                                $history = 'Resync từ Sohapay: đã thanh toán đơn hàng lúc ' . $strf;
                                Db_Booking::updateBillFromCart($cart_id, 1, 0, $history);
                                $cart = Db_Booking::getCart($cart_id);

                                Db_Booking::send_mail_sohapay($cart_id);
                                $v = array();
                                $v['order_id']          = $order_id;
                                $v['order_code']        = $order_code;
                                $v['order_email']       = $cart['user_email'];
                                $v['payment_time']      = strtotime($info['shp_payment_time']);
                                $v['payment_type']      = Db_OrderHelper::PAYMENT_TYPE_SOHAPAY;
                                $v['sp_payment_type']   = $info['shp_payment_type'];
                                $v['price']             = $info['shp_order_price'];
                                $v['response_code']     = $info['shp_payment_response_code'];
                                $v['response_message']  = $info['shp_payment_response_description'] .
                                                          '/' . $info['shp_payment_response_message'];
                                $v['transaction_info']  = $info['shp_order_info'];

                                $payment_log_id = Db_PaymentLog::log($v);

                                $data = array('note_admin' => $v['response_message'], 'user_id_m' => User::id(), 'user_name_m' => User::user_email(), 'time_m' => TIME_NOW, 'status' => $cart_status);
                                if($payment_log_id) $data['payment_log_id'] = $payment_log_id;
                                Db_OrderHelper::updateCart($cart_id, $data);

                                echo 'success';
                            }
                        }else{
                            echo 'Đơn hàng này không có quyền sync.';
                        }
                    }else{
                        echo 'Đơn hàng này chưa được thanh toán.';
                    }
                }
            }
        }
    }
}

?>